home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Applications / Python 1.3.3 / Python 133 68K / Lib / test / img / testimg.py < prev    next >
Text File  |  1996-05-20  |  8KB  |  332 lines

  1. #
  2. # Test script to test various image modules.
  3. #
  4. import sys
  5. sys.path.append('..')
  6.  
  7. import imgformat
  8. import imgppm
  9. import imgpgm
  10. import imgpbm
  11. import imgtiff
  12. try:
  13.     import imgsgi
  14. except ImportError:
  15.     imgsgi = None
  16. import imgjpeg
  17. import imggif
  18.  
  19. warning = 0
  20.  
  21. def checksize(r):
  22.     if (r.width, r.height) != (width, height):
  23.     print '** W/H change: wanted', (width,height), 'got', (r.width, r.height)
  24.     sys.exit(1)
  25.  
  26. def checkreader(r, wtddata):
  27.     global warning
  28.     checksize(r)
  29.     d = r.read()
  30.     if len(d) <> len(wtddata):
  31.     print '** Datalength change: wanted',len(wtddata),'got',len(d)
  32.     sys.exit(1)
  33.     if d <> wtddata:
  34.     print '** (warning) data changed'
  35.     warning = 1
  36.     for i in range(len(d)):
  37.         if d[i] <> wtddata[i]:
  38.         print '   First at byte', i
  39.         print `wtddata[i:i+4]`, `d[i:i+4]`
  40.         break
  41. #
  42. # Part one - Test ppm reader/writer
  43. #
  44. print '- Read ppm original image'
  45. r = imgppm.reader('in-rgb-t2b.ppm')
  46. width, height = r.width, r.height
  47. rgb_t2b_data = r.read()
  48. del r
  49.  
  50. print '- Write ppm original image'
  51. w = imgppm.writer('out-rgb-t2b.ppm')
  52. w.width, w.height, w.format = width, height, imgformat.rgb
  53. w.write(rgb_t2b_data)
  54. del w
  55.  
  56. print '- Write ppm upsidedown image'
  57. w = imgppm.writer('out-rgb-b2t.ppm')
  58. w.width, w.height, w.format = width, height, imgformat.rgb_b2t
  59. w.write(rgb_t2b_data)
  60. del w
  61.  
  62. print '- Read ppm upsidedown image'
  63. r = imgppm.reader('out-rgb-b2t.ppm')
  64. checksize(r)
  65. rgb_b2t_data = r.read()
  66. del r
  67.  
  68. #
  69. # part 2 - test pgm module
  70. #
  71.  
  72. print '- Read pgm original image'
  73. r = imgpgm.reader('in-grey-t2b.pgm')
  74. checksize(r)
  75. grey_t2b_data = r.read()
  76. del r
  77.  
  78. print '- Write pgm original image'
  79. w = imgpgm.writer('out-grey-t2b.pgm')
  80. w.width, w.height, w.format = width, height, imgformat.grey
  81. w.write(grey_t2b_data)
  82. del w
  83.  
  84. print '- Write pgm upsidedown image'
  85. w = imgpgm.writer('out-grey-b2t.pgm')
  86. w.width, w.height, w.format = width, height, imgformat.grey_b2t
  87. w.write(grey_t2b_data)
  88. del w
  89.  
  90. print '- Read pgm upsidedown image'
  91. r = imgpgm.reader('out-grey-b2t.pgm')
  92. checksize(r)
  93. grey_b2t_data = r.read()
  94. del r
  95.  
  96. #
  97. # step 3 - Test sgi module
  98. #
  99. if imgsgi:
  100.     print '- Write sgi rgb image'
  101.     w = imgsgi.writer('out-rgb-t2b.rgb')
  102.     w.width, w.height, w.format = width, height, imgformat.rgb
  103.     w.write(rgb_t2b_data)
  104.     del w
  105.     
  106.     print '-  (checking)'
  107.     r = imgsgi.reader('out-rgb-t2b.rgb')
  108.     checkreader(r, rgb_t2b_data)
  109.     del r
  110.     
  111.     print '- Write sgi rgb image upsidedown'
  112.     w = imgsgi.writer('out-rgb-b2t.rgb')
  113.     w.width, w.height, w.format = width, height, imgformat.rgb
  114.     w.write(rgb_b2t_data)
  115.     del w
  116.     
  117.     print '-  (checking)'
  118.     r = imgsgi.reader('out-rgb-b2t.rgb')
  119.     r.format = imgformat.rgb_b2t
  120.     checkreader(r, rgb_t2b_data)
  121.     del r
  122.     
  123.     print '- Write sgi grey image (cannot check)'
  124.     w = imgsgi.writer('out-grey-t2b.rgb')
  125.     w.width, w.height, w.file_format = width, height, imgformat.grey
  126.     w.write(rgb_t2b_data)
  127.     del w
  128.     
  129.     print '- Write sgi grey image upsidedown (cannot check)'
  130.     w = imgsgi.writer('out-grey-b2t.rgb')
  131.     w.width, w.height, w.file_format = width, height, imgformat.grey_b2t
  132.     w.write(rgb_t2b_data)
  133.     del w
  134. else:
  135.     print '- ** No SGI support available'
  136.  
  137. #
  138. # Step 4 - JPEG writer
  139. #
  140. print '- Write jpeg rgb image (cannot check)'
  141. w = imgjpeg.writer('out-rgb-t2b.jpg')
  142. w.width, w.height, w.format = width, height, imgformat.rgb
  143. w.write(rgb_t2b_data)
  144. del w
  145.  
  146. print '- Read jpeg rgb image and copy to ppm'
  147. r = imgjpeg.reader('out-rgb-t2b.jpg')
  148. checksize(r)
  149. w = imgppm.writer('out-rgb-t2b-viajpeg.ppm')
  150. w.width, w.height = width, height
  151. w.write(r.read())
  152. del w
  153. del r
  154.  
  155. print '- Write jpeg grey image (cannot check)'
  156. w = imgjpeg.writer('out-grey-t2b.jpg')
  157. w.width, w.height, w.format = width, height, imgformat.grey
  158. w.write(grey_t2b_data)
  159. del w
  160.  
  161. print '- Read jpeg grey image and copy to pgm'
  162. r = imgjpeg.reader('out-grey-t2b.jpg')
  163. r.format = imgformat.grey
  164. checksize(r)
  165. w = imgpgm.writer('out-rgb-t2b-viajpeg.pgm')
  166. w.width, w.height = width, height
  167. w.write(r.read())
  168. del w
  169. del r
  170.  
  171.  
  172. #
  173. # step 5 - TIFF writer
  174. #
  175. print '- Write tiff rgb image'
  176. w = imgtiff.writer('out-rgb-t2b.tiff')
  177. w.width, w.height, w.format = width, height, imgformat.rgb
  178. w.write(rgb_t2b_data)
  179. del w
  180.  
  181. print '  (check)'
  182. r = imgtiff.reader('out-rgb-t2b.tiff')
  183. checkreader(r, rgb_t2b_data)
  184. del r
  185.  
  186. print '- Write tiff grey image'
  187. w = imgtiff.writer('out-grey-t2b.tiff')
  188. w.width, w.height, w.format = width, height, imgformat.grey
  189. w.write(grey_t2b_data)
  190. del w
  191.  
  192. print '  (check)'
  193. r = imgtiff.reader('out-grey-t2b.tiff')
  194. checkreader(r, grey_t2b_data)
  195. del r
  196.  
  197. print '- Read tiff grey image and copy to rgb ppm'
  198. r = imgtiff.reader('out-grey-t2b.tiff')
  199. if r.format <> imgformat.grey:
  200.     print '* It is not a greyscale image!'
  201. r.format = imgformat.rgb
  202. checksize(r)
  203. w = imgppm.writer('out-grey-t2b-rgbviatiff.ppm')
  204. w.width, w.height = width, height
  205. w.write(r.read())
  206. del w
  207. del r
  208.  
  209. print '- Read tiff rgb image and copy to grey pgm'
  210. r = imgtiff.reader('out-rgb-t2b.tiff')
  211. if r.format <> imgformat.rgb:
  212.     print '* It is not a rgb image!'
  213. r.format = imgformat.grey
  214. checksize(r)
  215. w = imgpgm.writer('out-grey-t2b-greyviatiff.pgm')
  216. w.width, w.height = width, height
  217. w.write(r.read())
  218. del w
  219. del r
  220.  
  221. #
  222. # Step 6 - GIF reader
  223. #
  224. print '- Read GIF image and copy to GIF'
  225. r = imggif.reader('in-map-t2b.gif')
  226. checksize(r)
  227. w = imggif.writer('out-map-t2b.gif')
  228. w.width, w.height, w.colormap = r.width, r.height, r.colormap
  229. gifdata = r.read()
  230. w.write(gifdata)
  231. gifmap = r.colormap
  232. del r
  233. del w
  234.  
  235. print '- Re-read GIF image, compare and re-write'
  236. r = imggif.reader('out-map-t2b.gif')
  237. checksize(r)
  238. newdata = r.read()
  239. if newdata <> gifdata:
  240.     print '* Re-read GIF data differs!', (gifdata[:16], newdata[:16])
  241.     warning = 1
  242. if gifmap._map_as_string <> r.colormap._map_as_string:
  243.     print '* Re-read GIF colormap differs!: ', (gifmap._map_as_string[:16],
  244.                         r.colormap._map_as_string[:16])
  245.     warning = 1
  246. w = imggif.writer('out-map-t2b-2.gif')
  247. w.width, w.height, w.colormap = r.width, r.height, r.colormap
  248. w.write(newdata)
  249. del r
  250. del w
  251. del gifmap
  252. del gifdata
  253. del newdata
  254.  
  255. print '- Read GIF image, map, and copy to ppm'
  256. r = imggif.reader('in-map-t2b.gif')
  257. checksize(r)
  258. w = imgppm.writer('out-rgb-t2b-viagif.ppm')
  259. w.width, w.height = r.width, r.height
  260. gifdata = r.read()
  261. rgbdata = r.colormap.map(gifdata, r.width, imgformat.colormap, imgformat.rgb)
  262. w.write(rgbdata)
  263. del r
  264. del w
  265. del rgbdata
  266. del gifdata
  267.  
  268. print '- Read GIF image upsidedown, map, and copy to ppm'
  269. r = imggif.reader('in-map-t2b.gif')
  270. r.format = imgformat.colormap_b2t
  271. checksize(r)
  272. w = imgppm.writer('out-rgb-b2t-viagif.ppm')
  273. w.width, w.height = r.width, r.height
  274. gifdata = r.read()
  275. rgbdata = r.colormap.map(gifdata, r.width, imgformat.colormap, imgformat.rgb)
  276. w.write(rgbdata)
  277. del r
  278. del w
  279. del rgbdata
  280. del gifdata
  281.  
  282. #
  283. # Step 7 - Test pict writer
  284. #
  285. ##print '- Write PICT rgb image'
  286. ##w = imgpict.writer('out-rgb-t2b.pict')
  287. ##w.width, w.height, w.format = width, height, imgformat.rgb
  288. ##w.write(rgb_t2b_data)
  289. ##del w
  290. #
  291. # Part 8 - Test pbm reader/writer
  292. #
  293. print '- Read pbm original image'
  294. r = imgpbm.reader('in-icon.pbm')
  295. width, height = r.width, r.height
  296. mono_data = r.read()
  297. del r
  298.  
  299. print '- Write pbm original image'
  300. w = imgpbm.writer('out-icon.pbm')
  301. w.width, w.height, w.format = width, height, imgformat.pbmbitmap
  302. w.write(mono_data)
  303. del w
  304.  
  305. print '- Re-read pbm image'
  306. r = imgpbm.reader('out-icon.pbm')
  307. checkreader(r, mono_data)
  308.  
  309. print '- Dither grey to mono and write'
  310. try:
  311.     from imgop import dither
  312. except ImportError:
  313.     print '** skipped (no ditherer)'
  314.     dither = None
  315. if dither:
  316.     r = imgpgm.reader('in-grey-t2b.pgm')
  317.     w = imgpbm.writer('out-mono-t2b.pbm')
  318.     d = dither(r.read(), r.width, r.height, r.format, imgformat.pbmbitmap)
  319.     w.width, w.height, w.format = r.width, r.height, imgformat.pbmbitmap
  320.     w.write(d)
  321.  
  322. print '- Read PBM file as PGM and write'
  323. r = imgpgm.reader('in-icon.pbm')
  324. w = imgpgm.writer('out-icon.pgm')
  325. w.width, w.height, w.format = r.width, r.height, r.format
  326. w.write(r.read())
  327.  
  328. if warning:
  329.     sys.exit(1)
  330.     
  331.  
  332.